package scala

object Demo20Map {
  def main(args: Array[String]): Unit = {
    /**
      *
      * map  kv 格式
      *
      * 默认不可变
      */

    //"003" -> "王五" 构建一个二元组

    val map = Map(("001", "张三"), ("002", "李四"), "003" -> "王五")

    println(map)

    //可以通过key 获取value
    //如果key 不存在会报错
    println(map("001"))
    //如果key 不存在返回默认值
    println(map.getOrElse("005", "默认值"))


    println(map.keys)
    println(map.values)


    val map1 = Map(("001", 23), ("002", 24), "003" -> 25)

    //将年龄加一

    /**
      * map ； 将map中的元素传给后面的函数，发牛一个新的map 。 函数的参数是一个二元组
      * mapValues： 将map 中所有value 传给后面的函数，返回一个新的map
      *
      */

    val map2: Map[String, Int] = map1.map((kv: (String, Int)) => {
      val key: String = kv._1
      val value: Int = kv._2

      (key, value + 1)
    })

    println(map2)

    val map3: Map[String, Int] = map1.mapValues((value: Int) => value + 1)
    println(map3)


  }

}
